<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link type="text/css" rel="stylesheet" href="styles.css">
  <script type="text/javascript" src="config.js"></script>
</head>

<body>
  <h1 class="h">7. 高级技巧</h1>
  <dl>
    <dt>1. 样式美化</dt>
    <dd>
      Matplotlib 自带了很多主题样式。
      <pre><code>print(plt.style.available) # 查看所有可用的样式
plt.style.use('seaborn-v0_8') # 应用一个好看的样式，比如seaborn

df.plot(figsize=(8, 5))
plt.show()</code></pre>
      <strong>此外，还有许多常用主题：</strong>
      <table border="0" cellspacing="0" cellpadding="0">
        <thead>
          <tr>
            <th>主题名称</th>
            <th>推荐指数</th>
            <th>适用场景</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>ggplot</td>
            <td>⭐⭐⭐⭐⭐</td>
            <td>万能，尤其是数据分析、EDA</td>
          </tr>
          <tr>
            <td>seaborn-v0_8</td>
            <td>⭐⭐⭐⭐</td>
            <td>万能，风格现代</td>
          </tr>
          <tr>
            <td>dark_background</td>
            <td>⭐⭐⭐⭐</td>
            <td>PPT演示、网站、视频</td>
          </tr>
          <tr>
            <td>bmh</td>
            <td>⭐⭐⭐</td>
            <td>学术论文、多子图、打印</td>
          </tr>
          <tr>
            <td>grayscale</td>
            <td>⭐⭐⭐</td>
            <td>黑白打印</td>
          </tr>
          <tr>
            <td>default</td>
            <td>⭐⭐</td>
            <td>基础，需要完全自定义时</td>
          </tr>
        </tbody>
      </table>
    </dd>
    <dt>2. 解决中文显示问题（中国开发者必备）</dt>
    <dd>
      默认情况下，Matplotlib 显示中文会变成方框（乱码）。
      <pre><code># 设置中文字体（例如使用系统自带的黑体 SimHei）
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

# 现在可以正常使用中文了
plt.plot([1,2,3], label='测试线')
plt.legend()
plt.show()</code></pre>
    </dd>
    <dt>3. 保存图片</dt>
    <dd>
      Matplotlib自带保存功能。
      <pre><code>fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('要保存的图')
fig.savefig('my_awesome_plot.png', # 文件名
            dpi=300, # 分辨率，越高越清晰
            bbox_inches='tight') # 去除图片周边空白</code></pre>
    </dd>
  </dl>
</body>

</html>